# SYNTAX TEST "Git Ignore.sublime-syntax"
# <- text.git comment.line punctuation.definition.comment

  !~/.fo?d[a-a]r/*.dub
# <- - meta - string
# ^^^^^^^^^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^ keyword.operator.logical.path.glob.git
#  ^ variable.language.environment.home.glob.git
#   ^ punctuation.separator.path.glob.git
#    ^ - constant
#       ^ constant.other.wildcard.questionmark.glob.git
#               ^ punctuation.separator.path.glob.git
#                ^ constant.other.wildcard.asterisk.glob.git
#                 ^ punctuation.separator.path.glob.git

  ~/../f..o\'ld\"er/fo\*l\?der/fol../der
#^ - entity.name.pattern
# ^^^^^^^^^^^^^^^^^^^^^^^^^^ entity.name.pattern
# ^ variable.language.environment.home.glob.git
#   ^^ constant.other.path.parent.glob.git
#       ^^ - constant.other.path.parent.glob.git
#          ^^ constant.character.escape.path.glob.git
#              ^^ constant.character.escape.path.glob.git
#                     ^ - constant.character.escape.path.glob.git - punctuation.separator.path.glob.git
#                      ^ constant.other.wildcard.asterisk.glob.git
#                        ^ - constant.character.escape.path.glob.git - punctuation.separator.path.glob.git
#                         ^ constant.other.wildcard.questionmark.glob.git
#                                 ^^ - constant.other.path.parent.glob.git
#                                       ^ - entity.name.pattern

# NO HOME pattern
  ~fname~1.~e*
# ^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^ - variable.language.environment.home.glob.git
#       ^ - variable.language.environment.home.glob.git
#         ^ punctuation.separator.path.glob.git
#          ^ - variable.language.environment.home.glob.git
#            ^ constant.other.wildcard.asterisk.glob.git
  ~..fname
# ^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^ - variable.language.environment.home.glob.git
#  ^^ - constant.other.path.parent.glob.git
  ~../fname
# ^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^ - variable.language.environment.home.glob.git
#  ^^ - constant.other.path.parent.glob.git
#    ^ punctuation.separator.path.glob.git

# PARENT DIR TESTS
  ../..fname../../
# ^^^^^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^^ constant.other.path.parent.glob.git
#   ^ punctuation.separator.path.glob.git
#    ^^ - constant.other.path.parent.glob.git
#           ^^ - constant.other.path.parent.glob.git
#             ^ punctuation.separator.path.glob.git
#              ^^ constant.other.path.parent.glob.git
#                ^ punctuation.separator.path.glob.git
  ..fname../..
# ^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
#        ^^ - constant.other.path.parent.glob.git
#           ^^ - constant.other.path.parent.glob.git

# DRIVE SEPARATOR TESTS
  c:/fo:lder:/
# ^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
#  ^ punctuation.separator.path.glob.git
#   ^ punctuation.separator.path.glob.git
#      ^ invalid.illegal.separator.path.glob.git
#           ^ invalid.illegal.separator.path.glob.git
#            ^ punctuation.separator.path.glob.git
  cd:/folder
# ^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
#   ^ invalid.illegal.separator.path.glob.git
#    ^ punctuation.separator.path.glob.git
  :/folder
# ^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^ invalid.illegal.separator.path.glob.git
#  ^ punctuation.separator.path.glob.git


# CARACTER CLASS TESTS
  [
# ^ meta.character-class.glob.git punctuation.definition.character-class.begin.glob.git
  ]
# ^ string.unquoted.git - punctuation.definition.character-class

  [][]]
# ^^^^ meta.character-class.glob.git
#     ^ - meta.character-class.glob.git
# ^ punctuation.definition.character-class.begin.glob.git
#  ^^ constant.character.character-class.glob.git
#    ^ punctuation.definition.character-class.end.glob.git
#     ^ string.unquoted.git - punctuation.definition.character-class

  [^[\]] [^[[] [^]\[] [^]]] [^^][^!]
# ^^^^^^ meta.character-class.glob.git
#       ^ - meta.character-class.glob.git
#        ^^^^^ meta.character-class.glob.git
#             ^ - meta.character-class.glob.git
#              ^^^^^^ meta.character-class.glob.git
#                    ^ - meta.character-class.glob.git
#                     ^^^^ meta.character-class.glob.git
#                         ^^ - meta.character-class.glob.git
#                           ^^^^^^^^ meta.character-class.glob.git
# ^ punctuation.definition.character-class.begin.glob.git
#  ^ keyword.operator.logical.glob.git
#   ^ constant.character.character-class.glob.git - punctuation.definition.character-class
#    ^^ constant.character.escape.character-class - punctuation.definition.character-class
#      ^ punctuation.definition.character-class.end.glob.git
#        ^ punctuation.definition.character-class.begin.glob.git
#         ^ keyword.operator.logical.glob.git
#          ^^ constant.character.character-class.glob.git - punctuation.definition.character-class
#            ^ punctuation.definition.character-class.end.glob.git
#              ^ punctuation.definition.character-class.begin.glob.git
#               ^ keyword.operator.logical.glob.git
#                ^ constant.character.character-class.glob.git - punctuation.definition.character-class
#                 ^^ meta.character-class.glob.git constant.character.escape.character-class.glob.git
#                   ^ punctuation.definition.character-class.end.glob.git
#                     ^ punctuation.definition.character-class.begin.glob.git
#                      ^ keyword.operator.logical.glob.git
#                       ^ constant.character.character-class.glob.git - punctuation.definition.character-class
#                        ^ punctuation.definition.character-class.end.glob.git
#                         ^ string.unquoted.git - punctuation.definition.character-class
#                           ^ punctuation.definition.character-class.begin.glob.git
#                            ^ keyword.operator.logical.glob.git
#                             ^ constant.character.character-class.glob.git - keyword.operator
#                              ^ punctuation.definition.character-class.end.glob.git
#                               ^ punctuation.definition.character-class.begin.glob.git
#                                ^ keyword.operator.logical.glob.git
#                                 ^ constant.character.character-class.glob.git - keyword.operator
#                                  ^ punctuation.definition.character-class.end.glob.git

  [![\]] [![[] [!]\[] [!]]] [!!][!^]
# ^^^^^^ meta.character-class.glob.git
#       ^ - meta.character-class.glob.git
#        ^^^^^ meta.character-class.glob.git
#             ^ - meta.character-class.glob.git
#              ^^^^^^ meta.character-class.glob.git
#                    ^ - meta.character-class.glob.git
#                     ^^^^ meta.character-class.glob.git
#                         ^^ - meta.character-class.glob.git
#                           ^^^^^^^^ meta.character-class.glob.git
# ^ punctuation.definition.character-class.begin.glob.git
#  ^ keyword.operator.logical.glob.git
#   ^ constant.character.character-class.glob.git - punctuation.definition.character-class
#    ^^ constant.character.escape.character-class - punctuation.definition.character-class
#      ^ punctuation.definition.character-class.end.glob.git
#        ^ punctuation.definition.character-class.begin.glob.git
#         ^ keyword.operator.logical.glob.git
#          ^^ constant.character.character-class.glob.git - punctuation.definition.character-class
#            ^ punctuation.definition.character-class.end.glob.git
#              ^ punctuation.definition.character-class.begin.glob.git
#               ^ keyword.operator.logical.glob.git
#                ^ constant.character.character-class.glob.git - punctuation.definition.character-class
#                 ^^ meta.character-class.glob.git constant.character.escape.character-class.glob.git - punctuation.definition.character-class
#                   ^ punctuation.definition.character-class.end.glob.git
#                     ^ punctuation.definition.character-class.begin.glob.git
#                      ^ keyword.operator.logical.glob.git
#                       ^ constant.character.character-class.glob.git - punctuation.definition.character-class
#                        ^ punctuation.definition.character-class.end.glob.git
#                         ^ string.unquoted.git - punctuation.definition.character-class
#                           ^ punctuation.definition.character-class.begin.glob.git
#                            ^ keyword.operator.logical.glob.git
#                             ^ constant.character.character-class.glob.git - keyword.operator
#                              ^ punctuation.definition.character-class.end.glob.git
#                               ^ punctuation.definition.character-class.begin.glob.git
#                                ^ keyword.operator.logical.glob.git
#                                 ^ constant.character.character-class.glob.git - keyword.operator
#                                  ^ punctuation.definition.character-class.end.glob.git

  [-] [!-] [^-] [---] [a-z] [a\-z] []-[] []\-[]
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^^^ meta.character-class.glob.git
# ^ punctuation.definition.character-class.begin.glob.git
#  ^ constant.character.character-class.glob.git
#   ^ punctuation.definition.character-class.end.glob.git
#     ^^^^ meta.character-class.glob.git
#     ^ punctuation.definition.character-class.begin.glob.git
#      ^ keyword.operator.logical.glob.git
#       ^ constant.character.character-class.glob.git
#        ^ punctuation.definition.character-class.end.glob.git
#          ^^^^ meta.character-class.glob.git
#          ^ punctuation.definition.character-class.begin.glob.git
#           ^ keyword.operator.logical.glob.git
#            ^ constant.character.character-class.glob.git
#             ^ punctuation.definition.character-class.end.glob.git
#               ^^^^^ meta.character-class.glob.git
#               ^ punctuation.definition.character-class.begin.glob.git
#                ^^^ constant.other.range.glob.git
#                 ^ punctuation.separator.sequence.glob.git
#                   ^ punctuation.definition.character-class.end.glob.git
#                     ^^^^^ meta.character-class.glob.git
#                     ^ punctuation.definition.character-class.begin.glob.git
#                      ^^^ constant.other.range.glob.git
#                       ^ punctuation.separator.sequence.glob.git
#                         ^ punctuation.definition.character-class.end.glob.git
#                           ^^^^^^ meta.character-class.glob.git
#                           ^ punctuation.definition.character-class.begin.glob.git
#                            ^ constant.character.character-class.glob.git
#                             ^^ constant.character.escape.character-class.glob.git
#                               ^ constant.character.character-class.glob.git
#                                ^ punctuation.definition.character-class.end.glob.git
#                                  ^^^^^ meta.character-class.glob.git
#                                  ^ punctuation.definition.character-class.begin.glob.git
#                                   ^^^ constant.other.range.glob.git
#                                    ^ punctuation.separator.sequence.glob.git
#                                      ^ punctuation.definition.character-class.end.glob.git
#                                        ^^^^^^ meta.character-class.glob.git
#                                        ^ punctuation.definition.character-class.begin.glob.git
#                                         ^ constant.character.character-class.glob.git
#                                          ^^ constant.character.escape.character-class.glob.git
#                                            ^ constant.character.character-class.glob.git
#                                             ^ punctuation.definition.character-class.end.glob.git

  # unknown escape sequences resolve to their literal equivalent
  [0123456789abcde-z \t\n\\\"\'./()'-:,.;<>~!@#$%&*|+=\[\]{}`~?]
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.character-class.glob.git
# ^ punctuation.definition.character-class.begin.glob.git
#  ^^^^^^^^^^^^^^ constant.character.character-class.glob.git
#                ^^^ constant.other.range.glob.git
#                   ^ constant.character.character-class.glob.git
#                    ^^^^^^^^^^ constant.character.escape.character-class.glob.git
#                              ^^^^ constant.character.character-class.glob.git
#                                  ^^^ constant.other.range.glob.git
#                                     ^^^^^^^^^^^^ constant.character.character-class.glob.git
#                                                 ^ invalid.illegal.unexpected.character-class.glob.git
#                                                  ^^^ constant.character.character-class.glob.git
#                                                     ^^^^ constant.character.escape.character-class.glob.git
#                                                         ^^^^ constant.character.character-class.glob.git
#                                                             ^ invalid.illegal.unexpected.character-class.glob.git
#                                                              ^ punctuation.definition.character-class.end.glob.git

  [[.collate.]] [[=equi-valence=]]
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^ meta.character-class.glob.git - meta.character-class meta.character-class
#  ^^^^^^^^^^^ meta.character-class.glob.git meta.character-class.glob.git
#             ^ meta.character-class.glob.git - meta.character-class meta.character-class
# ^^^ punctuation.definition.character-class.begin.glob.git
#    ^^^^^^^ constant.other.character-class.collate.glob.git
#           ^^^ punctuation.definition.character-class.end.glob.git
#               ^ meta.character-class.glob.git - meta.character-class meta.character-class
#                ^^^^^^^^^^^^^^^^ meta.character-class.glob.git meta.character-class.glob.git
#                                ^ meta.character-class.glob.git - meta.character-class meta.character-class
#               ^^^ punctuation.definition.character-class.begin.glob.git
#                  ^^^^^^^^^^^^ constant.other.character-class.equivalence.glob.git
#                              ^^^ punctuation.definition.character-class.end.glob.git

  [[.a.][.b.]] [[=a=][=b=]]
# ^^^^^^^^^^^^^^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore
# ^ meta.character-class.glob.git - meta.character-class meta.character-class
#  ^^^^^^^^^^ meta.character-class.glob.git meta.character-class.glob.git
#            ^ meta.character-class.glob.git - meta.character-class meta.character-class
#             ^ - meta.character-class
#              ^ meta.character-class.glob.git - meta.character-class meta.character-class
#               ^^^^^^^^^^ meta.character-class.glob.git meta.character-class.glob.git
#                         ^ meta.character-class.glob.git - meta.character-class meta.character-class
#                          ^ - meta.character-class
# ^ punctuation.definition.character-class.begin.glob.git
#  ^^ punctuation.definition.character-class.begin.glob.git
#    ^ constant.other.character-class.collate.glob.git
#     ^^ punctuation.definition.character-class.end.glob.git
#       ^^ punctuation.definition.character-class.begin.glob.git
#         ^ constant.other.character-class.collate.glob.git
#          ^^ punctuation.definition.character-class.end.glob.git
#            ^ punctuation.definition.character-class.end.glob.git
#              ^ punctuation.definition.character-class.begin.glob.git
#               ^^ punctuation.definition.character-class.begin.glob.git
#                 ^ constant.other.character-class.equivalence.glob.git
#                  ^^ punctuation.definition.character-class.end.glob.git
#                    ^^ punctuation.definition.character-class.begin.glob.git
#                      ^ constant.other.character-class.equivalence.glob.git
#                       ^^ punctuation.definition.character-class.end.glob.git
#                         ^ punctuation.definition.character-class.end.glob.git

  # Note: :ascii: and :word: are ST specific posix classes, unsupported by ordinary shells
  [[:ascii:][:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:word:][:xdigit:][:inval:]]
# ^ string.unquoted.git.ignore entity.name.pattern.git.ignore meta.character-class.glob.git - meta.character-class meta.character-class
#  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.unquoted.git.ignore entity.name.pattern.git.ignore meta.character-class.glob.git meta.character-class.glob.git
#                                                                                                                                         ^ string.unquoted.git.ignore entity.name.pattern.git.ignore meta.character-class.glob.git - meta.character-class meta.character-class
# ^ punctuation.definition.character-class.begin.glob.git
#  ^^ punctuation.definition.character-class.begin.glob.git
#    ^^^^^ invalid.illegal.character-class.posix.glob.git
#         ^^ punctuation.definition.character-class.end.glob.git
#           ^^ punctuation.definition.character-class.begin.glob.git
#             ^^^^^ constant.other.character-class.posix.glob.git
#                  ^^ punctuation.definition.character-class.end.glob.git
#                    ^^ punctuation.definition.character-class.begin.glob.git
#                      ^^^^^ constant.other.character-class.posix.glob.git
#                           ^^ punctuation.definition.character-class.end.glob.git
#                             ^^ punctuation.definition.character-class.begin.glob.git
#                               ^^^^^ constant.other.character-class.posix.glob.git
#                                    ^^ punctuation.definition.character-class.end.glob.git
#                                      ^^ punctuation.definition.character-class.begin.glob.git
#                                        ^^^^^ constant.other.character-class.posix.glob.git
#                                             ^^ punctuation.definition.character-class.end.glob.git
#                                               ^^ punctuation.definition.character-class.begin.glob.git
#                                                 ^^^^^ constant.other.character-class.posix.glob.git
#                                                      ^^ punctuation.definition.character-class.end.glob.git
#                                                        ^^ punctuation.definition.character-class.begin.glob.git
#                                                          ^^^^^ constant.other.character-class.posix.glob.git
#                                                               ^^ punctuation.definition.character-class.end.glob.git
#                                                                 ^^ punctuation.definition.character-class.begin.glob.git
#                                                                   ^^^^^ constant.other.character-class.posix.glob.git
#                                                                        ^^ punctuation.definition.character-class.end.glob.git
#                                                                          ^^ punctuation.definition.character-class.begin.glob.git
#                                                                            ^^^^^ constant.other.character-class.posix.glob.git
#                                                                                 ^^ punctuation.definition.character-class.end.glob.git
#                                                                                   ^^ punctuation.definition.character-class.begin.glob.git
#                                                                                     ^^^^^ constant.other.character-class.posix.glob.git
#                                                                                          ^^ punctuation.definition.character-class.end.glob.git
#                                                                                            ^^ punctuation.definition.character-class.begin.glob.git
#                                                                                              ^^^^^ constant.other.character-class.posix.glob.git
#                                                                                                   ^^ punctuation.definition.character-class.end.glob.git
#                                                                                                     ^^ punctuation.definition.character-class.begin.glob.git
#                                                                                                       ^^^^^ constant.other.character-class.posix.glob.git
#                                                                                                            ^^ punctuation.definition.character-class.end.glob.git
#                                                                                                              ^^ punctuation.definition.character-class.begin.glob.git
#                                                                                                                ^^^^ invalid.illegal.character-class.posix.glob.git
#                                                                                                                    ^^ punctuation.definition.character-class.end.glob.git
#                                                                                                                      ^^ punctuation.definition.character-class.begin.glob.git
#                                                                                                                        ^^^^^^ constant.other.character-class.posix.glob.git
#                                                                                                                              ^^ punctuation.definition.character-class.end.glob.git
#                                                                                                                                ^^ punctuation.definition.character-class.begin.glob.git
#                                                                                                                                  ^^^^^ invalid.illegal.character-class.posix.glob.git
#                                                                                                                                       ^^ punctuation.definition.character-class.end.glob.git
#                                                                                                                                         ^ punctuation.definition.character-class.end.glob.git
